// 网络请求工具模块 - 模拟版本
class NetworkUtil {
  constructor() {
    this.currentApiIndex = 0;
    this.availableApis = ['http://mock-api.local'];
  }

  /**
   * 获取当前API地址
   */
  getCurrentApiUrl() {
    return this.availableApis[this.currentApiIndex] || 'http://mock-api.local';
  }

  /**
   * 切换到下一个API地址
   */
  switchToNextApi() {
    this.currentApiIndex = (this.currentApiIndex + 1) % this.availableApis.length;
    const newUrl = this.getCurrentApiUrl();
    console.log(`模拟切换API地址到: ${newUrl}`);
    return newUrl;
  }

  /**
   * 重置API地址到第一个
   */
  resetApiIndex() {
    this.currentApiIndex = 0;
  }

  /**
   * 发送网络请求（模拟版本）
   * @param {Object} options 请求选项
   * @returns {Promise} 请求Promise
   */
  request(options) {
    return new Promise((resolve) => {
      setTimeout(() => {
        console.log(`模拟请求: ${options.url}`);
        resolve({
          statusCode: 200,
          data: { success: true, message: '模拟数据' }
        });
      }, 500);
    });
  }

  /**
   * 测试API连接
   */
  async testConnection() {
    return new Promise((resolve) => {
      setTimeout(() => {
        resolve({ success: true, url: this.getCurrentApiUrl() });
      }, 300);
    });
  }

  /**
   * 自动检测最佳API地址
   */
  async findBestApi() {
    return new Promise((resolve) => {
      setTimeout(() => {
        resolve(this.getCurrentApiUrl());
      }, 500);
    });
  }

  /**
   * 获取网络信息
   */
  getNetworkInfo() {
    return new Promise((resolve) => {
      setTimeout(() => {
        resolve({
          networkType: 'wifi',
          isConnected: true
        });
      }, 100);
    });
  }

  /**
   * 检查是否为远程访问环境
   */
  isRemoteAccess() {
    return false;
  }
}

// 创建全局实例
const networkUtil = new NetworkUtil();

module.exports = {
  NetworkUtil,
  networkUtil
};